home *** CD-ROM | disk | FTP | other *** search
- //
- // calendar.h
- // Copyright (c) 1989, 1990 by Jiro Nakamura
- // All rights reserved
- //
- // Calendar routine package prototypes.
- // Actual functions in calendar.m
- //
- // Note: These are collected from various sources. They may have
- // the infamous 1670 bug (or whenever it was). Use only for
- // dates that are current (1900+).
- //
- // RCS Information
- // Revision Number-> $Revision: 1.12 $
- // Last Revised-> $Date: 90/10/27 17:44:09 $
- //
-
- #import <time.h>
- #import <stdio.h>
-
- #define SEC TRUE
- #define NOSEC FALSE
-
- /*
- extern const int ayear[13];
- extern const char *months[12];
- extern const char *shortMonths[12];
- extern const char *shortWeekDays[7];
- extern const char *weekDays[7];
-
- */
-
- // Procedure: int jan1( int year)
- // Arguments: int year-> the year in question (e.g., 1970, 1971)
- // Description: Returns what day of the week the first day
- // of the year <year> will be.
- // (i.e., Jan 1st, <year> will be .......)
- // Returns: an integer from 0..6. (0=Sunday.....6=Saturday)
- int jan1( int);
-
-
- // Procedure: int daysInMonth( int month, int year)
- // Arguments: int month, int year -> the month and year in question
- // Description: Returns the number of days in the month and year in question
- // Return Value: The number of days in <month> of <year>.
- int daysInMonth(int,int);
-
-
- // Procedure: int daysInYear( int year)
- // Arguments: int year -> the year in question
- // Description: Returns the number of days in the year in question
- // Return Value: The number of days in <year>.
- int daysInYear(int);
-
-
- // Procedure: int addOne(int month, int year)
- // Arguments: the month and year in question
- // Description: This is a support function. It returns 1 if
- // after the date in question, 1 must be added
- // for leap years.
- // Return Value: 1 if the date is in the year of a leap year,
- // and after Feb 29, 0 if it is not a leap year
- // or it is before Feb 28.
- int addOne( int, int);
-
-
- // Procedure: int daysUpTo(int month, year)
- // Arguments: the date in question
- // Description: Returns how many days it has been since
- // Jan 1 to the beginning of this month.
- // Return Value: 0 - 365
- int daysUpTo(int,int);
-
-
- // Procedure: int firstDayOf( int month, int year)
- // Arguments: the date in question
- // Description: Returns what day of the week the month
- // in question starts with.
- // Return Value: an integer from 0..6. (0=Sunday.....6=Saturday)
- int firstDayOf(int,int);
-
-
- // Procedure: int wday( int day, int month, int year)
- // Arguments: the <day>, <month> and <year> of the date in question
- // Description: Returns the day of the week of the particular date.
- // See ctime(3) for a proper definition of wday.
- // Return Value: an integer from 0..6. (0=Sunday.....6=Saturday)
- int wday(int,int,int);
-
-
- // Procedure: int yday( int day, int month, int year)
- // Arguments: the <day>, <month> and <year> of the date in question
- // Description: Returns the index of the date into the year
- // See ctime(3) for a proper definition of yday.
- // Return Value: an integer from 0..365 (366). 0= Jan 1st xxxx, 365(366) = Dec 31, xxxx
- int yday(int,int,int);
-
-
- // Procedure: int printCalendar( int month, int year,
- // NXStream *stream)
- // Arguments: the date in question and an open stream
- // Description: printCalendar will print a monthly calendar like
- // cal(1) for the month and year in question and will
- // dump it to the stream <steram>.
- // Return Value: 0 if an error occured, 1 if all successful.
- int printCalendar(int month, int year, NXStream *stream);
-
-
- // Procedure: int printCalendarRTF(int day, int month,
- // int year, NXStream *stream
- // char *fontName, float fontSize)
- // Arguments: the date in question and a stream
- // Description: printCalendarRTF will a RTF version of
- // a monthly calendar like printCalendar.
- // The day will be highlighted.
- // Return Value: 0 if an error occured, 1 if all successful.
- int printCalendarRTF(int day, int month, int year, NXStream *stream,
- char *fontName, float fontSize);
-
-
- // Procedure: ascMyTime(struct tm *time, BOOL showSeconds, BOOL militaryTime)
- // Arguments: struct tm *time -> the particular time you want printed
- // (BOOL) showSeconds -> whether you want seconds printed
- // (BOOL) militaryTime -> whether you want 24hr or am/pm time
- // Description: ascMyTime converts the time structure <time> into an
- // ascii string in the format:
- // seconds showing-> Mon Jan 11, 1990 5:11:30 pm
- // seconds hidden-> Mon Jan 11, 1990 5:11 pm
- // <showSeconds> is either TRUE (showing) or FALSE (hidden)
- // militaryTime is either TRUE or FALSE.
- // Return value:A constant character pointer to the converted string.
- const char * ascMyTime(struct tm *, BOOL showSeconds, BOOL militaryTime);
-
- // Procedure: ascMyDate(struct tm *time)
- // Arguments: struct tm *time -> the particular date you want printed
- // Description: ascMyDate converts the time structure <time> into an
- // ascii string in the format:
- // Mon Jan 11, 1990
- // Return value:A constant character pointer to the converted string.
- const char * ascMyDate(struct tm *);
-
-
- // Procedure: monthFromAscii( char *string)
- // Arguments: char *string -> the string to analyze
- // Description: monthFromAscii tries its darn hardest to figure out what
- // month <string> refers to. It can understand:
- // jan, Jan, JaN, jAN -> mean month 1.
- // 1 -> means month 1.
- // Thats it! Pretty stupid routine, huh.
- // Return Value: The month (an integer) from 1-12.
- int monthFromAscii(char *);
-
-
- // Procedure: calAsciiCmp( char *a, char *b)
- // Scope: To be used only internally by monthFromAscii
- // Arguments: char *a, char *b
- // Description: Compares string <a> to string <b>, but ignores case
- // Return Value: 0 if <a> is the same as <b>
- // -1 if <a> is before <b> (alphabetically)
- // 1 if <a> is behind <b> (alphabetically)
- int calAsciiCmp( char * , char * );
-
-
- // Procedure: double secondsBetween( struct tm *a, struct tm* b)
- // Arguments: struct tm *a, *b
- // Description: This will compare the time structures <a> to <b>
- // and return the number of seconds between the two.
- // Return Value: The number of seconds seperating the two.
- // Positive if <b> is greater than <a>,
- // negative if <a> is greater, and 0 if they are the same.
- double secondsBetween( struct tm * a, struct tm* b);
-
-
- // Procedure: int timeCompare( struct tm *a, struct tm *b)
- // Arguments: time structure <a> and time structure <b>
- // Description: Compares time structure <a> to <b>.
- // Return Value: an integer-> -1 if <a> is smaller than <b>
- // 0 if <a> is equal to <b>
- // 1 if <a> is greater than <b>
- int timeCompare(struct tm *a, struct tm *b);
-
- // Procedure: int dayCompare( struct tm *a, struct tm *b)
- // Arguments: time structure <a> and time structure <b>
- // Description: Compares time structure <a> to <b>.
- // Return Value: an integer-> -1 if <a> is smaller than <b>
- // 0 if <a> is equal to <b>
- // 1 if <a> is greater than <b>
- int dayCompare(struct tm *a, struct tm *b);
-
-
- // Procedure: (void) fixTmStructure( struct tm *ts)
- // Arguments: struct tm *ts -> the time structure to "fix"
- // Description: This will go through and make sure the time
- // structure is in perfect shape, fix wday
- // and yday, and allow you to do atrocious
- // things like:
- // ts.tm_mday += 10;
- // and then fix the structure back up by calling
- // fixTmStructure( &ts)
- // Return Value: void
- void fixTmStructure( struct tm *ts);
-
- // Procedure: const struct tm *timeNow()
- // Description: Returns a pointer to a structure which contains the
- // present time
- // Return Value: (struct tm *) -> a pointer to the structure
- const struct tm *timeNow();
-
-